/**
Company: Sarkar software technologys
WebSite: http://www.sarkar.cn
Author: yeganaaa
Date : 8/2/18
Time: 6:51 AM
 */

package com.ug_project.dict.engine.indextable

class AddressBlockIterator(val addressBlock: AddressBlock) : Iterator<AddressBlock> {
    private var index = 0
    var availableAddrIndex = -1 //ئىشلىتىشكە بولىدىغان ئادېرىس بۆلۈمچىسى، كىيىن مەزمۇن قوشقان ۋاقىتتا مۇشۇ ئىندىكىستىكى ئادېرىس بۆلۈمچىسىگە ئادېرسىنى قويىمىز

    override fun hasNext(): Boolean {
        var value = false
        if (addressBlock.level <= 1) //ئەگەر بۇ ئادېرىس بۆلۈمچىسى 1. قەۋەتلىك ئادېرىس بۆلۈمچىسى بولسا ياكى ئۇنىڭدىن تۆۋەن بولسا بۇ بۆلەكنىڭ ئاستىدا باشقا ئادېرىس بۆلۈمچىلىرى بولمايدۇ
            index = addressBlock.addrs.size //شۇڭا بۇ يەردىن while نىڭ شەرتىنى بۇزىۋىتىش ئارقىلىق while نى توسۇپ قىلىش كىرەك

        while (index < addressBlock.addrs.size) {
            value = addressBlock[index] > 0
            index++
            if (value) break

            availableAddrIndex = addressBlock[index - 1]
        }
        return value
    }

    override fun next(): AddressBlock = AddressBlock(addressBlock.indexTable, addressBlock.addrs[index - 1], addressBlock.level - 1)

}